/**
 * 高阶函数: 用来处理函数的函数就是函数
 * 1、如果某个函数的参数是函数，则该函数就是高阶函数
 * 2、如果某个函数的返回值是函数，则该函数就是高阶函数
 */

let array = [ '羊宏炜' , '刘浩然' , '王幸' , '温生民' , '付彪' ];

// Array.prototype.forEach 就是个高阶函数
array.forEach( (e,i,a)=> console.log( e ) );

// 自定义高阶函数
function times(){
    let counter = 0 ;
    // 返回一个函数(该函数内部访问了外部函数的局部变量)
    return function(){
        console.log( ++counter );
    }
}

let x = times();
x();
x();
x();